package com.gx.enums;

public enum ErrorCodeEnum implements EnumCode<String> {
    // http
    TOKEN_ERROR("200", "token无效"),
    UNAUTHORIZED("401", "没有相关权限"),
    FORBIDDEN("403", "禁止访问"),
    VALIDATE_FAILED("404", "资源未找到"),
    NOT_ACCEPTABLE("406", "请求的格式不正确"),
    GONE("410", "数据被删除"),
    UNKNOWN_SERVER_ERROR("500", "未知服务器异常"),
    INTERNAL_SERVER_ERROR("500", "服务器发生错误"),

    // 账户及归属组织异常码
    ACCOUNT_NOT_EXIST("10001", "账户不存在"),
    ACCOUNT_DISABLE("10002", "账户已禁用"),
    ACCOUNT_LOCK("10003", "账户已被锁定"),
    ACCOUNT_PASSWORD_ERROR("10004", "账号或密码错误"),
    PASSWORD_ERROR("10005", "密码错误"),
    CAPTCHA_ERROR("10006", "验证码错误"),
    IDENTIFIER_NOT_EXIST("10007", "身份不存在"),
    DELETE_DEFAULT_PHOTO_ERROR("10008", "默认头像不可删除"),
    TOKEN_NOT_EMPTY("10009", "TOKEN不能为空"),
    TOKEN_INVALID("10010", "TOKEN无效"),

    DEPT_USER_DELETE_ERROR("10011", "用户部门删除失败"),
    SUPERIOR_DEPT_ERROR("10012", "高级部门错误"),
    SUPERIOR_MENU_ERROR("10013", "高级菜单错误"),
    DEPT_SUB_DELETE_ERROR("10014", "子部门删除失败"),
    SUB_MENU_EXIST("10015", "子菜单已存在"),

    // 数据及操作异常码
    DATA_NOT_EMPTY("11001", "数据不能为空"),
    DATA_EXISTS("11002", "数据已存在"),
    DB_RECORD_NOT_EXISTS("11003", "数据不存在"),
    DB_RECORD_EXISTS("11004", "数据已存在"),
    PARAMS_GET_ERROR("11005", "参数获取错误"),
    PARAMS_SCOPE_ERROR("11006", "参数取值范围错误"),
    UPLOAD_FILE_NOT_EMPTY("11007", "上传文件不能为空"),
    UPLOAD_FILE_TYPE_ERROR("11008", "上传文件类型错误"),

    // 配置相关异常码
    OSS_UPLOAD_FILE_ERROR("20001", "OSS云存储上传文件失败"),
    SEND_SMS_ERROR("20002", "SMS发送失败"),
    MAIL_TEMPLATE_NOT_EMPTY("20003", "邮件模板不能为空"),
    REDIS_ERROR("20004", "REDIS错误"),
    INVALID_SYMBOL("20005", "标记无效"),
    JSON_FORMAT_ERROR("20006", "JSON格式化失败"),
    SMS_CONFIG_ERROR("20007", "SMS配置错误"),

    // 定时任务相关异常码
    TASK_EXISTS("30001", "定时任务已存在"),
    TASK_NOT_EXISTS("30002", "定时任务不存在"),
    TASK_ALREADY_STARTED("30003", "定时任务已启动"),
    TASK_CONFIG_ERROR("30004", "定时任务配置错误"),
    TASK_NODE_NOT_AVAILABLE("30005", "定时任务节点不可用"),

    // 流程引擎相关异常码
    ACT_DEPLOY_ERROR("40001", "活动部署错误"),
    ACT_MODEL_IMG_ERROR("40002", "活动模板图片错误"),
    ACT_MODEL_EXPORT_ERROR("40003", "活动模板导出失败"),
    ACT_DEPLOY_FORMAT_ERROR("40004", "活动部署格式化失败");

    private final String code;
    private final String message;

    private ErrorCodeEnum(String code, String message) {
        this.code = code;
        this.message = message;
    }

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getMessage() {
        return message;
    }
}
